package com.trs.zk.common.mybatis.annotation;

import com.trs.zk.common.mybatis.mapper.query.QueryType;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/**
 * 定义物理表列属性（不继承父类注解）
 * @author msy
 * @date 2018/8/11 17:52
 */
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Column {
    /**
     * 字段名（例如：config_key）
     */
    String name() default "";

    /**
     * 属性名，若不指定，则根据name()字段名进行驼峰命名法转换（例如：config_key 转换为   configKey）
     */
    String attrName() default "";

    /**
     * 标签名
     */
    String label() default "";

    /**
     * 字段备注
     */
    String comment() default "";

    /**
     * 是否主键（update、delete时的条件）
     */
    boolean isPK() default false;

    /**
     * 是否插入字段
     */
    boolean isInsert() default true;

    /**
     * 是否更新字段
     */
    boolean isUpdate() default true;

    /**
     * 是否是查询字段
     */
    boolean isQuery() default true;

    /**
     * 查询类型
     */
    QueryType queryType() default QueryType.EQ;

    /**
     * 包含嵌入一个实体
     */
    Class<?> includeEntity() default Class.class;

    boolean isTreeName() default false;
}
